package third

type WdBaseDTOReq struct {
	AppId      string `json:"appId"`      //* AppID由平台分配
	Method     string `json:"method"`     //* 接口名称(apply，详情见2.6)
	Version    string `json:"version"`    //* 接口版本号
	Timestamp  int64  `json:"timestamp"`  //* 请求时间戳(毫秒级)
	DigestType string `json:"digestType"` //* 摘要类型（SM2）
	EncType    string `json:"encType"`    //* 加密类型(SM4)
	Ext        string `json:"ext"`        //* 扩展字段,内容格式为JOSN，方便后面扩展使用
}

type WdBaseRes struct {
	BusConsumeTime string `json:"busConsumeTime"` // 业务处理时间(单位毫秒)
	NetConsumeTime string `json:"netConsumeTime"` // 网络消耗时间(单位毫秒)
	ThirdPartyTime string `json:"thirdPartyTime"` // 三方调用时间(单位毫秒)
	Ext            string `json:"ext"`            // 扩展字段,内容格式为JOSN，方便后面扩展使用
}

type WdBaseResData struct {
	BizContent interface{} `json:"bizContent"` // 出参为加密字符串，使用sm4解密。
	WdBaseRes
}

type WdBaseDTORes struct {
	RespCode string        `json:"respCode"` // 返回代码详见1.2.1.3节
	RespDesc string        `json:"respDesc"` // 返回消息
	RespData WdBaseResData `json:"respData"` // 返回结果
}

// 2.2
type SecretDTO struct {
	Secret string `json:"secret"` // 应用密钥（使用m2加密参数appSecret，公钥pubKey由平台分配）
}

type GetTokenDTO struct {
	WdBaseDTOReq
	BizContent SecretDTO `json:"bizContent"`
}

type TokenDTO struct {
	Token string `json:"token"` // 令牌
}

type TokenRespData struct {
	BizContent     TokenDTO `json:"bizContent"`
	BusConsumeTime string   `json:"busConsumeTime"`
	NetConsumeTime string   `json:"netConsumeTime"`
	ThirdPartyTime string   `json:"thirdPartyTime"`
	Ext            string   `json:"ext"`
}

type TokenRespDataDTO struct {
	RespCode string        `json:"respCode"` // 返回代码详见1.2.1.3节
	RespDesc string        `json:"respDesc"` // 返回消息
	RespData TokenRespData `json:"respData"` // 返回数据
}

// 2.3.1

type EcardEntry struct {
	Address         string `json:"address"`         // 居住地址
	AppMode         string `json:"appMode"`         //* 发卡方式: "APP在线申请","1" "微信服务号","5" "微信小程序","6" "支付宝生活号","7" "支付宝小程序","8"
	Birthday        string `json:"birthday"`        // 出生日期 8Len(YYYYMMDD)
	Cellphone       string `json:"cellphone"`       // 手机号码
	Citizenship     string `json:"citizenship"`     // 国籍
	EthnicityCode   string `json:"ethnicityCode"`   // 民族代码按国家标准GB3304-91
	Gender          string `json:"gender"`          // 性别按国家标准GB/T 2261.1-2003
	HjAddress       string `json:"hjAddress"`       // 户籍地址
	IdNo            string `json:"idNo"`            //* 证件号
	IdType          string `json:"idType"`          //* 证件类型 01	居民身份证  02	居民户口簿   03	护照  04	军官证  05	驾驶证  06	港澳居民来往内地通行证  07	台湾居民来往内地通行证  08	出生医学证明  09	医保卡  10	就诊卡  11	实体健康卡  12	港澳台居民居住证  99	其他法定有效证件
	IsRealName      string `json:"isRealName"`      // 是否实名标识：1实名，0非实名
	Jkdah           string `json:"jkdah"`           // 健康档案号
	Klx             string `json:"klx"`             //* 卡类型，1:电子健康卡
	MarryStatusCode string `json:"marryStatusCode"` // 婚姻状况代码(GB/T 2261.2)
	Name            string `json:"name"`            //* 姓名
	NativePlace     string `json:"nativePlace"`     // 籍贯
	Sbkh            string `json:"sbkh"`            // 社保卡号
	Telephone       string `json:"telephone"`       // 联系电话
	TerminalType    string `json:"terminalType"`    // 终端类型:见4.20终端类型编码
	Unit            string `json:"unit"`            // 工作单位
	Ylfyzffs        string `json:"ylfyzffs"`        // 医疗费用支付方式：01.城镇职工基本医疗保险；02.城镇居民基本医疗保险；03.新型农村合作医疗；04.贫困救助；05.商业医疗保险；06.全公费；07.全自费；99.其他
	Zydm            string `json:"zydm"`            // 职业类别代码GB/T 6565
	PayAccType      string `json:"payAccType"`      // 绑定的或支持的支付账号类型：0.无；1.微信；2.支付宝；3.银联；4.银行；5.统一支付平台；9.其他；可多选，格式：1^2
	PoorMark        string `json:"poorMark"`        // 贫困标识：1.贫困  0.非贫困

}

type EcardDTOReq struct {
	WdBaseDTOReq
	BizContent string `json:"bizContent"` // 请求参数JSON字符串SM4加密（密钥：明文token）参数详情见2.4.1
	Digest     string `json:"digest"`     // 摘要值token的sm2加密Token通过获取令牌接口获得，公钥publickey由平台分配
}

type EcardEntryRes struct {
	Vuid      string `json:"vuid"`      // 电子健康卡ID
	Empi      string `json:"empi"`      // 主索引ID
	EcContent string `json:"ecContent"` // 二维码内容
}

// 2.3.2
type EcardApplyEntry struct {
	Vuid string `json:"vuid"` // 电子健康卡ID
}

type EcardApplyRes struct {
	Vuid      string `json:"vuid"`      // 电子健康卡ID
	Empi      string `json:"empi"`      // 主索引ID
	EcContent string `json:"ecContent"` // 二维码内容
	Img       string `json:"img"`       // 二维码Base64图片
	Color     string `json:"color"`     // 图片颜色编码，备注：返回颜色值（RGB），如取不到颜色值color字段则显示码黑码
}

// 2.3.3
type EcardModifyEntry struct {
	Vuid   string     `json:"vuid"`   // 电子健康卡ID
	People EcardEntry `json:"people"` // 用户信息
}

type EcardModifyRes struct {
	Vuid string `json:"vuid"` // 电子健康卡ID
	Empi string `json:"empi"` // 主索引ID
}

// 2.3.4
type EcardBindEntry struct {
	Vuid     string       `json:"vuid"`     // 电子健康卡ID
	OptType  string       `json:"optType"`  // 操作类型 1：绑卡 2：解绑 3注销
	CardList []*CardEntry `json:"cardList"` // 卡表
}

type CardEntry struct {
	Kh      string `json:"kh"`      // 卡号
	Klx     string `json:"klx"`     // 卡类型
	OrgCode string `json:"orgCode"` // 发卡机构代码
	OrgName string `json:"orgName"` // 发卡机构名称
}

type EcardBindRes struct {
	Kh       string `json:"kh"`       // 卡号
	RespCode string `json:"respCode"` // 返回编码,10000成功，其它值为失
	RespDesc string `json:"respDesc"` // 返回描述
}

// 2.3.5
type CardFindEntry struct {
	Kh      string `json:"kh"`      // 卡号，电子健康卡KH则为VUID
	Klx     string `json:"klx"`     // 卡类型
	OrgCode string `json:"orgCode"` // 发卡机构代码
}

// 2.3.6

// 2.3.7
type AccessOrgsEntry struct {
	TypeCode string `json:"typeCode"` // 机构类别代码
}

type AccessOrgsRes struct {
	OrgCode         string `json:"orgCode"`         // 机构代码
	OrgName         string `json:"orgName"`         // 机构名称
	NationCode      string `json:"nationCode"`      // 国家机构代码
	AreaCode        string `json:"areaCode"`        // 行政区划代码（应用城市代码）
	AreaName        string `json:"areaName"`        // 行政区划名称
	OrgSortName     string `json:"orgSortName"`     // 机构简称
	AffiliationName string `json:"affiliationName"` // 隶属关系名称
	AffiliationCode string `json:"affiliationCode"` // 隶属关系代码
	LevelCode       string `json:"levelCode"`       // 机构级别代码
	LevelName       string `json:"levelName"`       // 机构级别名称
	GradeCode       string `json:"gradeCode"`       // 机构等次代码
	GradeName       string `json:"gradeName"`       // 机构等次名称
	TypeCode        string `json:"typeCode"`        // 机构类别代码
	TypeName        string `json:"typeName"`        // 机构类别名称
	HeadName        string `json:"headName"`        // 负责人姓名
	ContactName     string `json:"contactName"`     // 机构联系人姓名
	ContactTel      string `json:"contactTel"`      // 机构联系人电话
	IndustryCode    string `json:"industryCode"`    //  机构性质代码
	IndustryName    string `json:"industryName"`    // 机构性质名称
	OrgAddress      string `json:"orgAddress"`      // 机构地址
	ErhcFlag        string `json:"erhcFlag"`        // 受理标志
	Category        string `json:"category"`        // 机构分类
}

// 2.3.8

type UseCardLogRes struct {
	IssueOrgCode string `json:"issueOrgCode"` //发卡机构代码
	IssueOrgName string `json:"issueOrgName"` //发卡机构名称
	Empi         string `json:"empi"`         //主索引index
	Vuid         string `json:"vuid"`         //电子健康卡ID
	Kh           string `json:"kh"`           //卡号
	GrcodeType   string `json:"qrcodeType"`   //二维码类型
	ChannelCode  string `json:"channelCode"`  //刷卡终端类型
	ChannelName  string `json:"channelName"`  //刷卡终端名称
	Name         string `json:"name"`         //姓名
	GenderCode   string `json:"genderCode"`   //性别代码
	IdNumber     string `json:"idNumber"`     //身份证号
	UseChannel   string `json:"useChannel"`   //用卡渠道
	UseOrgCode   string `json:"useOrgCode"`   //用卡机构代码
	UseOrgName   string `json:"useOrgName"`   //用卡机构名称
	UseCityCode  string `json:"useCityCode"`  //用卡城市代码
	UseCityName  string `json:"useCityName"`  //用卡城市名称
	MachineCode  string `json:"machineCode"`  //识读终端编号
	MedKs        string `json:"medKs"`        //诊疗科室
	MedStepCode  string `json:"medStepCode"`  //诊疗环节代码
	MedStepName  string `json:"medStepName"`  //诊疗环节名称
}

// 2.3.9

type MedEntry struct {
	MedKs       string `json:"medKs"`       // 标准科室代码
	ChannelCode string `json:"channelCode"` // 用卡类型编号 03: 网站,04: 手机app, 05: 微信平台, 06: 支付宝生活号
	MedStepCode string `json:"medStepCode"` // 诊疗环节代码
	MedStepName string `json:"medStepName"` // 诊疗环节名称
}

type VerifyEntry struct {
	Med          MedEntry `json:"med"`
	EcContent    string   `json:"ecContent"`    //* 二维码内容
	DataTag      string   `json:"dataTag"`      //实时和非实时标识，0为实时数据，1为非实时数据 2为上传用卡时间
	UserCardTime string   `json:"userCardTime"` //用卡时间，dataTag为2时必传，格式yyyyMMddHHmmss
}

type VerifyRes struct {
	Vuid           string     `json:"vuid"`           //电子健康卡ID
	Empi           string     `json:"empi"`           // 主索引
	OrgCode        string     `json:"orgCode"`        // 健康卡签发机构代码
	OrgName        string     `json:"orgName"`        // 健康卡签发机构名称
	BusConsumeTime string     `json:"busConsumeTime"` // 业务处理时间(单位毫秒)
	NetConsumeTime string     `json:"netConsumeTime"` // 网络消耗时间(单位毫秒)
	ThirdPartyTime string     `json:"thirdPartyTime"` // 三方调用时间(单位毫秒)
	Ext            string     `json:"ext"`            // 扩展字段,内容格式为JOSN，方便后面扩展使用
	People         EcardEntry `json:"people"`
}
